<template>
    <li @mouseenter="changeColor(true)"
        @mouseleave="changeColor(false)"
        :style="{background: bgColor}">
        <label>
            <input type="checkbox" v-model="todo.status"/>
            <span>{{todo.title}}</span>
        </label>
        <button class="btn btn-danger" v-show="isShow" @click="deleteItem">删除</button>
    </li>
</template>

<script>
    import PubSub from "pubsub-js";

    export default {
        name: "TodoItem",
        props: {
            todo: Object,
            index: Number
        },
        data() {
            return {
                bgColor: 'white',
                isShow: false
            }
        },
        methods: {
            changeColor(isShow) {
                if (isShow) {
                    this.bgColor = "#aaaaaa";
                } else {
                    this.bgColor = "white";
                }
                this.isShow = isShow
            },
            deleteItem() {
                const {index} = this;
                PubSub.publish("deleteTodo", index);
            }
        }
    }
</script>

<style scoped>
    li {
        list-style: none;
        height: 36px;
        line-height: 36px;
        padding: 0 5px;
        border-bottom: 1px solid #ddd;
    }
    li label {
        float: left;
        cursor: pointer;
    }
    li label li input {
        vertical-align: middle;
        margin-right: 6px;
        position: relative;
        top: -1px;
    }
    li button {
        float: right;
        margin-top: 3px;
    }
    li:before {
        content: initial;
    }
    li:last-child {
        border-bottom: none;
    }
</style>